/*
 *  Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 *  This source code is licensed under the MIT license found in the LICENSE
 *  file in the root directory of this source tree.
 *
 */

/*
 *  THIS FILE IS AUTOGENERATED. DO NOT MODIFY IT; ALL CHANGES WILL BE LOST IN
 *  VAIN.
 *
 *  @generated
 */
#pragma once

#include <mcrouter/lib/carbon/TypeList.h>
#include <mcrouter/lib/network/CarbonRequestHandler.h>

#include "mcrouter/lib/network/gen/MemcacheMessages.h"

namespace facebook {
namespace memcache {

namespace detail {

using MemcacheRequestList = carbon::List<
    McAddRequest,
    McAppendRequest,
    McCasRequest,
    McDecrRequest,
    McDeleteRequest,
    McExecRequest,
    McFlushAllRequest,
    McFlushReRequest,
    McGatRequest,
    McGatsRequest,
    McGetRequest,
    McGetsRequest,
    McIncrRequest,
    McLeaseGetRequest,
    McLeaseSetRequest,
    McMetagetRequest,
    McPrependRequest,
    McQuitRequest,
    McReplaceRequest,
    McSetRequest,
    McShutdownRequest,
    McStatsRequest,
    McTouchRequest,
    McVersionRequest>;
} // namespace detail

template <class OnRequest>
class MemcacheRequestHandler
    : public carbon::
          CarbonRequestHandler<OnRequest, detail::MemcacheRequestList> {
 public:
  static constexpr const char* name = "Memcache";

  template <class... Args>
  explicit MemcacheRequestHandler(Args&&... args)
      : carbon::CarbonRequestHandler<OnRequest, detail::MemcacheRequestList>(
            std::forward<Args>(args)...) {}
};
} // namespace memcache
} // namespace facebook
